/**
<p>统计的gridpanel控件</p>
 * xtype = cceafstatgridpanel

 * @module Ext-ux-cceaf-control
 * @class cceaf.control.StatGridPanel
 * @extends Ext.grid.GridPanel
 * @since 1.0
 */
Ext.define('cceaf.control.StatGridPanel',{
	extend: 'Ext.grid.Panel', 
	requires: [
       'cceaf.control.FieldSet',
       'cceaf.control.Button'
    ],
    alias: 'widget.cceafstatgridpanel',

	constructor: function(config){
		config = config || {};
		
		cceaf.control.StatGridPanel.superclass.constructor.apply(this, arguments);
	},
	
	/**
	 * 统计store的model
	 *
     * @property model 
     * @type String
     * @default null
     */
	model: null,
	
	/**
	 * 模块名称，在grid的title上显示
	 *
     * @property moduleName 
     * @type String
     * @default null
     */
	moduleName: "",
	
	/**
	 * 打印统计列表的action
	 *
     * @property printAction 
     * @type String
     * @default null
     */
	printAction: null,
	
	/**
	 * 是否有关闭按钮
	 * 
     * @property hasClose 
     * @type boolean
     * @default true
	 */
	hasClose: true,
	
	/**
	 * 是否显示分页栏，默认显示
	 *
     * @property hasPagingToolbar 
     * @type boolean
     * @default true
     */
	hasPagingToolbar: true,
	
	/**
	 * 统计的action
	 *
     * @property statAction 
     * @type String
     * @default null
     */
	statAction: null,
	
	/**
	 * 设置每行的class
	 */
	viewConfig: {
		forceFit:true,
		enableRowBody:true,
		getRowClass : function(record, rowIndex, p, ds){
			return '';
		}
	},
	
	initComponent : function(){
		var config = this;
		
		var columns = config.columns;
		if (!columns) {
			cceaf.util.ExtHelper.showErrorDialog("必须设置grid的columns！");
		}
		
		var model = config.model;
		//var statAction =  config.statAction;

		//定义数据源
//	    var ds = new Ext.data.ArrayStore({
//	    	autoDestroy: true,  
//	    	//pageSize: cceaf.PAGE_SIZE,
//	    	model: model,
//	    	
//	    	proxy: {
//	    		type: 'ajax',
//	    		url: statAction,
//	    		reader: {
//					type: 'array'
//				}
//			},
//			
//	        listeners: {
//	        	'beforeload': function(){
//	        		if (model) {
//	        			if (!Ext.ModelManager.getModel(model)) {
//	        				cceaf.util.ExtHelper.showErrorDialog("model:" + model + "不存在，请设置正确的model！");
//	        				return false;
//	            		} 
//	        		} else {
//	        			cceaf.util.ExtHelper.showErrorDialog("请定义对应的StatModel！");
//	        			return false;
//	        		}
//	        		return true;
//	        	},
//	        	
//	        	'load': function(){
//	        		var jr = ds.getProxy().getReader();
//	        		if(!jr.jsonData) {
//	        			cceaf.util.ExtHelper.showErrorDialog("没有设置正确的action或没有返回正确的json字符串！");
//	        			return;
//	        		}
//	        		
//	        		var success = jr.jsonData.success;
//	        		var message = jr.jsonData.message;
//	        		if (success) {
//	        			cceaf.util.ExtHelper.showInfoDialog(message);
//	        		} else {
//	        			cceaf.util.ExtHelper.showErrorDialog(message);
//	        		}
//	        	},
//	        	
//	        	'loadexception': function() {
//	        		var jr = ds.getProxy().getReader();
//	        		if(jr.jsonData){
//		        		var message = jr.jsonData.message;
//		        		cceaf.util.ExtHelper.showErrorDialog(message);
//	        		}
//	        		else{
//	        			cceaf.util.ExtHelper.showErrorDialog("返回无效的JSONDATA数据");
//	        		}
//	        	}
//	        }
//	        
//	    });
	    
	    var ds = new Ext.data.Store({
	    	proxy: {
	    		type: 'ajax',
	    		url:  config.statAction,
	    		actionMethods: {  
		            read: 'POST'  
		        },  
	    		reader: {
					type: 'json',
					root: 'data',
					totalProperty: 'totalCount',
					messageProperty: 'message'
				}
			},
			
	        listeners: {
	        	'load': function(){
	        		var jr = ds.getProxy().getReader();
	        		if(!jr.jsonData) {
	        			cceaf.util.ExtHelper.showErrorDialog("没有设置正确的action或没有返回正确的json字符串！");
	        			return;
	        		}
	        		
	        		var message = jr.jsonData.message;
	        		var url = jr.jsonData.url;
	        		cceaf.util.ExtHelper.showInfoDialog(message,url);
	        	},
	        	'loadexception': function(){
	        		var jr = ds.getProxy().getReader();
	        		if(jr.jsonData){
		        		var message = jr.jsonData.message;
		        		var url = jr.jsonData.url;
		        		cceaf.util.ExtHelper.showErrorDialog(message,url);
	        		}
	        		else{
	        			cceaf.util.ExtHelper.showErrorDialog("返回无效的JSONDATA数据");
	        		}
	        	}
	        	
	        },
	        groupField: config.groupField,
	        autoDestroy: true,  
	        //pageSize: 20,
	    	pageSize: szpshang.Global.PAGE_SIZE,
	    	model: config.model
	    });
	    
		/**
		 * 默认操作区
		 */
		var operateArea = [],i=0;
		if(config.printAction){
			operateArea[i] = {iconCls: 'printListIcon', text: ' 打印 ', xtype: 'cceafbutton', handler: this.print};
			i++;
			operateArea[i] = '-';
			i++;
		}
		if(config.hasClose == true){
			operateArea[i] = {iconCls: 'closeIcon', text: ' 关闭 ', xtype: 'cceafbutton', handler: this.close};
			i++;
			operateArea[i] = '-';
			i++;
		}
		
		var operateToolbar = config.operateToolbar;
		if(operateToolbar == null){
			var reOperateToolbar = config.reOperateToolbar;
			if (reOperateToolbar == null) {
				operateToolbar = {
					xtype: 'toolbar',
					items: operateArea
				};
			} else {
				operateToolbar = {
					xtype: 'toolbar',
					items: reOperateToolbar
				};
			}
		}else {
			var array = operateArea.concat(operateToolbar);
			operateToolbar = {
				xtype: 'toolbar',
				items: array
			};
		}
		
		var pagingtoolbar = {
			xtype: 'pagingtoolbar',
			store: ds,
	        dock: 'bottom',  
	        displayInfo: true,
	        displayMsg:'当前显示 {0} - {1}条记录 /共 {2}条记录',
	      	emptyMsg:'无显示数据'
		};

		var dockedItems = operateToolbar;
		if (config.hasPagingToolbar === true) {
			dockedItems[dockedItems.length] = pagingtoolbar;
		}
		
		Ext.applyIf(this, {
			store: ds,
			//title: config.moduleName + '信息',
	        border: true,
	        frame: true,
	        loadMask: {msg:'正在加载数据，请稍侯……'},
	        dockedItems: dockedItems
		});
		
		cceaf.control.StatGridPanel.superclass.initComponent.call(this);
    },

    initEvents: function() {
    	cceaf.control.StatGridPanel.superclass.initEvents.call(this);
    	
    	//注册其他事件
    	this.registerEvent();
    },
	
    /**
     * 打印页面
     */
    print: function(){
    	var statGrid = this.findParentByType('cceafstatgridpanel');
    	var url =  statGrid.printAction;
    	
    	cceaf.util.CceafHelper.openUrl(url);
    },
    
    /**
     * 关闭页面
     */
    close: function(){
    	var statWin = this.up('window');
    	if (statWin) {
    		statWin.close();
    	}
    },
    
    /**
     * 注册其他事件
     */
    registerEvent: function(){
    	
    }
    
});